const express = require('express');
const cors = require('cors');
const dotenv = require('dotenv');
const path = require('path');
const connectDB = require('./config/db');
const userRoutes = require('./routes/userRoutes');
const bannerRoutes = require('./routes/bannerRoutes');
const itemRoutes = require('./routes/itemRoutes');

// 加载环境变量
dotenv.config();

// 连接数据库
connectDB();

const app = express();

// CORS 配置
const corsOptions = {
  origin: ['http://localhost:5173', 'http://localhost:3000'], // 允许的前端域名
  methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], // 允许的 HTTP 方法
  allowedHeaders: ['Content-Type', 'Authorization'], // 允许的请求头
  credentials: true, // 允许发送凭证（cookies等）
  maxAge: 86400 // 预检请求的缓存时间（秒）
};

// 中间件
app.use(cors(corsOptions));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// 静态文件服务
app.use('/images', express.static(path.join(__dirname, 'public/images')));

// 路由
app.use('/api/users', userRoutes);
app.use('/api/banners', bannerRoutes);
app.use('/api/items', itemRoutes);

// 基础路由
app.get('/', (req, res) => {
  res.json({ message: '欢迎使用 API' });
});

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ message: '服务器内部错误' });
});

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
  console.log(`服务器运行在端口 ${PORT}`);
}); 